import { ballCamRegex, UniStore } from '@/utils/UniStorege'

const ADMINISTRATOR_KEY = 'system'

const ROLES = [
  // 委外派工
  'OM',
  'om'
]

const APPROBATION_ROLES = [
  // ---- 审批管理权限 ----
  //采购主管
  'cgzg',
  // 技术主管
  'jszg',
  // 分配采购员权限
  'DDA'
]

const AllPerim = [
  // 工厂管理
  'fa',
  'FA',
  ADMINISTRATOR_KEY
]

const getRoles = function () {
  const user_info = UniStore.getObject('u_201')
  let { roleCode = [] } = user_info
  //对应字典分类字段名
  return roleCode || []
}

const hasRoles = function (perims = []) {
  let roleCode = getRoles() || []
  let boPermi = false
  roleCode.some((role) => {
    let res = perims.includes(role)
    boPermi = res
    return res
  })

  return boPermi
}

const getPermissionDictionary = function () {
  let dict_name = ''

  const user_info = UniStore.getObject('u_201')
  let { roleCode = [] } = user_info

  // 字典中定义权限字段
  // check if roles of user exists.
  roleCode.some((role) => {
    let wildRole = role?.toLowerCase()
    let res = ROLES.includes(wildRole) || AllPerim.includes(wildRole)
    if (res) {
      dict_name = wildRole === 'system' ? 'FA' : wildRole
    }
    return res
  })

  return dict_name
}

const getApprobationPermissionDictionary = function () {
  const user_info = UniStore.getObject('u_201')
  let { roleCode = [] } = user_info

  let dict_name = ''

  // 字典中定义权限字段
  // check if roles of user exists.
  roleCode.some((role) => {
    let wildRole = role?.toLowerCase()
    let res = APPROBATION_ROLES.concat(['system']).includes(wildRole)
    if (res) {
      dict_name = wildRole === 'system' ? 'cgzg' : wildRole
    }
    return res
  })

  return dict_name
}

export const isAdmin = function () {
  const user_info = UniStore.getObject('u_201')
  let { roleCode = [] } = user_info
  let boPermi = false
  roleCode.some((role) => {
    let res = AllPerim.includes(role)
    if (res) {
      boPermi = role?.toLowerCase() === 'system'
    }
    return res
  })

  return boPermi
}

export const useAppMenuPermi = function () {
  return new Promise((resolve, reject) => {
    let dict_name = getPermissionDictionary()

    const { rightList = [] } = UniStore.getTempUserInfo()
    let isTemp = rightList.length

    if (!dict_name && !isTemp) {
      reject('当前用户没有匹配角色权限.')
    }
    if (isTemp) {
      dict_name = 'FA'
    }

    // dict
    //   .getSysDictionary({
    //     dict_name
    //   })
    //   .then((res) => {
    //     let { data = [] } = res || {}
    //     let _data = []
    //     data.map((item) => {
    //       let label = item['F_ItemName']
    //       let enabled = item['F_EnabledMark']
    //       let sortIndex = item['F_SortCode']
    //
    //       let enabledAll = false
    //       if (isAdmin()) {
    //         enabledAll = true
    //       }
    //       if (!enabled && !enabledAll) {
    //         return
    //       }
    //       //value = page的路径
    //       // !!! 不需要开头的 /
    //       let [img, value, bgColor] = (item['F_Description'] || '').split(';')
    //       if (!isTemp) {
    //         _data.push({
    //           label,
    //           img,
    //           value,
    //           bgColor: '#' + bgColor,
    //           sortIndex
    //         })
    //         return
    //       }
    //       // 处理临时账户
    //       let hasMonitor = false
    //       rightList.forEach((rights) => {
    //         if (ballCamRegex.includes(rights['item_id'])) {
    //           if (img === 'monitor' && !hasMonitor) {
    //             _data.push({
    //               label,
    //               img,
    //               value,
    //               bgColor: '#' + bgColor,
    //               sortIndex
    //             })
    //             hasMonitor = true
    //           }
    //         }
    //         if (rights['item_id'] === img && img !== 'monitor') {
    //           _data.push({
    //             label,
    //             img,
    //             value,
    //             bgColor: '#' + bgColor,
    //             sortIndex
    //           })
    //         }
    //       })
    //     })
    //
    //     resolve(
    //       _data.sort((a, b) => {
    //         return a.sortIndex - b.sortIndex
    //       })
    //     )
    //   })
  })
}

export const useApprobationPermi = function () {
  const baseUrl = (iconName) => '../../static/icons/AMI/' + iconName + '.png'
  return new Promise((resolve, reject) => {
    let dict_name = getApprobationPermissionDictionary()

    if (!dict_name) {
      reject('当前用户没有匹配角色权限.')
    }

    // dict
    //   .getSysDictionary({
    //     dict_name
    //   })
    //   .then((res) => {
    //     let { data = [] } = res || {}
    //     let _data = []
    //     data.map((item) => {
    //       let label = item['F_ItemName']
    //       let enabled = item['F_EnabledMark']
    //       let sortIndex = item['F_SortCode']
    //
    //       let enabledAll = false
    //       if (isAdmin()) {
    //         enabledAll = true
    //       }
    //
    //       if (!enabled && !enabledAll) {
    //         return
    //       }
    //
    //       //value = page的路径
    //       // !!! 不需要开头的 /
    //       let [icon, iconChecked, name] = (item['F_Description'] || '').split(';')
    //
    //       _data.push({
    //         text: label,
    //         icon: baseUrl(icon),
    //         iconChecked: baseUrl(iconChecked),
    //         name,
    //         sortIndex
    //       })
    //     })
    //
    //     resolve(
    //       _data.sort((a, b) => {
    //         return a.sortIndex - b.sortIndex
    //       })
    //     )
    //   })
  })
}

/**
 * 审批管理->分配采购员权限
 * @returns {boolean}
 */
export const usePurchaseDispatcher = function () {
  //对应字典分类字段名
  return hasRoles(['DDA'])
}
